The present invention relates generally to the field of accessing non-relational data files, and more specifically to the accessing of such non-relational data files using relational-type queries.
Relational databases have gained a great deal of popularity as a means of representing data because relational databases allow easy and flexible access to the data they contain. Relational databases are perceived by users as being organized into tables. As such, they permit the retrieval of information in many different ways.
Relational database management systems have been developed to support relational databases. Relational query languages are used to control relational database management systems and to provide users with mechanisms for modifying or accessing data in the databases. Relational query languages usually provide for data manipulation operations such as retrieval, modification, deletion, and insertion into a database. One common relational query language is called the SQL or structured query language.
In addition to relational databases, several different types of non-relational data files are currently in use, many of which were developed before the advent of relational databases. Non-relational data files are considered to be just a series of records without structure, although they may include an index. Data is retrieved from a non-relational data file by specifying the record or by using the index. Non-relational data files generally do not allow flexible data access by means of tables.
Because of the power and flexibility of relational databases and the query languages that have been designed to support those databases, there is a general desire on the part of many users to transport the data that is currently in a non-relational data file into a relational database. Physical transportion of the data is very costly, however, and can sometimes be very difficult for large or complex data files. In addition, there is always the possibility of error.
Another approach has been to translate relational-type queries such as SQL commands, into a series of commands understandable by the different non-relational data files. This technique, which has been referred to as a "gateway," requires a separate interface for each different database. Although gateways have been used, they suffer from certain disadvantages. One is that a new gateway must be created for each different non-relational data file. In addition, the time and energy of skilled programmers is required to build gateways, which can add a great deal of cost to any system.
It would therefore be desirable to create a system which provided an access to non-relational data files via relational queries which also allowed additional databases and additional sources of the queries to be added without a great deal of reprogramming.
Another desirable feature would be to provide such access using a mechanism which optimizes the data accesses to the non relational data files to reduce the cost of such access and to promote efficiency.
It would also be desirable to construct such a system which took advantage of capabilities built into drivers for non-relational data files.